package com.xt.purchasingsystem.service.productionManagementService;


import com.xt.purchasingsystem.dto.DFileDto;
import com.xt.purchasingsystem.dto.MApplyDto;
import com.xt.purchasingsystem.dto.ProductionOrderDto;
import com.xt.purchasingsystem.model.MApply;
import com.xt.purchasingsystem.utils.Result;

import java.util.List;

/**
 * @author: 老姚
 * Date:  2020/4/19 11:06
 */

public interface ProductPlanManagementService {
    /**
     * 多条件分页查询可以生产计划登记的产品档案的业务
     *
     * @param dFileDto
     * @return
     */
    Result getAllPlanRegisterByPage(DFileDto dFileDto);

    /**
     * 提交生产计划的业务
     *
     * @param mApplys
     * @return
     */
    Result submitProductPlans(List<MApply> mApplys);

    /**
     * 分页查询所有未审核的生产计划的业务
     *
     * @param currNo
     * @param pageSize
     * @return
     */
    Result queryAllMApplyByUnreviewed(Integer currNo, Integer pageSize);

    /**
     * 审核生产计划的业务
     *
     * @param mApply
     * @return
     */
    Result auditMApply(MApply mApply);

    /**
     * 多条件分页查询所有未派工的生产计划的业务
     *
     * @param mApplyDto
     * @return
     */
    Result getAllMApplyByNotWork(MApplyDto mApplyDto);

    /**
     * 根据产品编号查询此产品所有工序及工序物料
     *
     * @param productId
     * @return
     */
    Result getMDesignProcedureDetailsVos(String productId, Double amount);

    /**
     * 提交生产派工单的业务
     *
     * @param productionOrderDto
     * @return
     */
    Result submitProductionOrder(ProductionOrderDto productionOrderDto);

    /**
     * 分页查询所有未审核的生产总表
     * @param currNo
     * @param pageSize
     * @return
     */
    Result getAllUnreviewedByPage(Integer currNo, Integer pageSize);

    /**
     * 根据生产总表编号获取此生产的所有生产工序及工序物料的业务
     * @param id
     * @return
     */
    Result getAllMProcedureAndModulesById(Integer id);

    Result reviewProductionDispatchOrder(ProductionOrderDto productionOrderDto);
}
